package com.shop.cereshop.commons.domain.im.tx.resp.ocr;

import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;

import java.util.List;

/**
 * 营业执照识别响应实体类
 * 参考文档：https://cloud.tencent.com/document/product/866/36215
 */
@Data
public class BizLicenseOCRResp {

    /**
     * 统一社会信用代码（三合一之前为注册号）
     */
    @JsonProperty("RegNum")
    private String regNum;

    /**
     * 公司名称
     */
    @JsonProperty("Name")
    private String name;

    /**
     * 注册资本
     */
    @JsonProperty("Capital")
    private String capital;

    /**
     * 法定代表人
     */
    @JsonProperty("Person")
    private String person;

    /**
     * 地址
     */
    @JsonProperty("Address")
    private String address;

    /**
     * 经营范围
     */
    @JsonProperty("Business")
    private String business;

    /**
     * 主体类型
     */
    @JsonProperty("Type")
    private String type;

    /**
     * 营业期限
     */
    @JsonProperty("Period")
    private String period;

    /**
     * 组成形式
     */
    @JsonProperty("ComposingForm")
    private String composingForm;

    /**
     * 成立日期
     */
    @JsonProperty("SetDate")
    private String setDate;

    /**
     * 告警码列表
     * -9102 黑白复印件告警
     * -9104 翻拍件告警
     */
    @JsonProperty("RecognizeWarnCode")
    private List<Integer> recognizeWarnCode;

    /**
     * 告警码说明
     * WARN_COPY_CARD 黑白复印件告警
     * WARN_RESHOOT_CARD 翻拍件告警
     */
    @JsonProperty("RecognizeWarnMsg")
    private List<String> recognizeWarnMsg;

    /**
     * 是否为副本。1为是，-1为不是
     */
    @JsonProperty("IsDuplication")
    private Integer isDuplication;

    /**
     * 登记日期
     */
    @JsonProperty("RegistrationDate")
    private String registrationDate;

    /**
     * 图片旋转角度(角度制)，文本的水平方向为0度；顺时针为正，角度范围是0-360度
     */
    @JsonProperty("Angle")
    private Float angle;

    /**
     * 是否有国徽。false为没有，true为有
     */
    @JsonProperty("NationalEmblem")
    private Boolean nationalEmblem;

    /**
     * 是否有二维码。false为没有，true为有
     */
    @JsonProperty("QRCode")
    private Boolean qrCode;

    /**
     * 是否有印章。false为没有，true为有
     */
    @JsonProperty("Seal")
    private Boolean seal;

    /**
     * 标题
     */
    @JsonProperty("Title")
    private String title;

    /**
     * 编号
     */
    @JsonProperty("SerialNumber")
    private String serialNumber;

    /**
     * 登记机关
     */
    @JsonProperty("RegistrationAuthority")
    private String registrationAuthority;

    /**
     * 是否是电子营业执照。false为没有，true为有
     */
    @JsonProperty("Electronic")
    private Boolean electronic;

    /**
     * 非营业执照的营业类证件识别结果，将以结构化形式呈现
     */
    @JsonProperty("BusinessCertificate")
    private List<BusinessCertificateInfo> businessCertificate;

    /**
     * 重要提示字段
     */
    @JsonProperty("Important")
    private String important;

    /**
     * 唯一请求 ID，由服务端生成，每次请求都会返回
     */
    @JsonProperty("RequestId")
    private String requestId;
    @JsonProperty("ErrorMsg")
    private String errorMsg ;

    /**
     * 非营业执照的营业类证件识别结果信息
     * 参考文档：https://cloud.tencent.com/document/api/866/33527#BusinessCertificateInfo
     */
    @Data
    public static class BusinessCertificateInfo {
        /**
         * 识别出的字段名称(关键字)
         */
        @JsonProperty("Name")
        private String name;

        /**
         * 识别出的字段名称对应的值，也就是字段Name对应的字符串结果
         */
        @JsonProperty("Value")
        private String value;

        /**
         * 文本行在旋转纠正之后的图像中的像素坐标
         */
        @JsonProperty("Rect")
        private Rect rect;
    }

    /**
     * 文本行在旋转纠正之后的图像中的像素坐标
     */
    @Data
    public static class Rect {
        /**
         * 左上角x坐标
         */
        @JsonProperty("X")
        private Integer x;

        /**
         * 左上角y坐标
         */
        @JsonProperty("Y")
        private Integer y;

        /**
         * 宽度
         */
        @JsonProperty("Width")
        private Integer width;

        /**
         * 高度
         */
        @JsonProperty("Height")
        private Integer height;
    }
}
